package com.atguigu.chaptar1

object FunSimple {
  def main(args: Array[String]): Unit = {
    val func=(x:Int,y:Int)=>x+y
     def sum(x:Int,y:Int,func:(Int,Int)=>Int)=func(x,y)
    //调用
      //1.函数值传递
    sum(3,5,(x:Int,y:Int)=>x+y)
      //2.省略函数参数类型
    sum(3,5,(x,y)=>x+y)
      //3.如果函数参数在函数体中只使用了一次,可以用_代替
    sum(3,5,_+_)
        //3.1如果函数参数使用顺序与定义顺序不一致,不能_简化
    sum(3,5,(x,y)=>y-x) ; sum(3,5,_-_)
        //3.2如果函数只有一个参数,并且函数体中没有对参数任何操作直接返回,不能_代替,单个下划线解析不了
        //3.3如果函数体中存在(),函数参数在该()中以表达式形式存在,不能_代替
    //sum(3,5,(x,y)=>(x+1)*y); sum(3,5,(_ + 1)*_) //此时会解析成(x=>x+1)*y
      //4.如果函数只有一个参数,此时函数参数列表的()可以省
    def minus1(x:Int,func:(Int)=>Int)=x-1
    minus1(3,x=>x-1)
  }

}
